.\" Man page generated from reStructuredText.
.
.TH "CRUSHDIFF" "8" "Jan 23, 2022" "dev" "Ceph"
.SH NAME
crushdiff \- ceph crush map test tool
.
.nr rst2man-indent-level 0
.
.de1 rstReportMargin
\\$1 \\n[an-margin]
level \\n[rst2man-indent-level]
level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
-
\\n[rst2man-indent0]
\\n[rst2man-indent1]
\\n[rst2man-indent2]
..
.de1 INDENT
.\" .rstReportMargin pre:
. RS \\$1
. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin]
. nr rst2man-indent-level +1
.\" .rstReportMargin post:
..
.de UNINDENT
. RE
.\" indent \\n[an-margin]
.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]]
.nr rst2man-indent-level -1
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
..
.SH 提纲
.nf
\fBcrushdiff\fP [ \-\-osdmap \fIosdmap\fP ] [ \-\-pg\-dump \fIpg\-dump\fP ]
[ \-\-compiled ] [ \-\-verbose ] \fIcommand\fP \fIcrushmap\fP
.fi
.sp
.SH 描述
.sp
\fBcrushdiff\fP 是让我们测试 crushmap 更改
（ PG 数、挪动的对象和字节数）效果的工具。
这是 osdmaptool(8) 的一个包装，
用它的 \fB\-\-test\-map\-pgs\-dump\fP 选项获取更改过的 PG 列表。
另外，它用 pg 统计功能计算要挪动的对象和字节数。
.sp
默认情况下， \fBcrushdiff\fP 会使用集群的当前 osdmap 和 pg 统计信息，
因此需要集群的访问权限。虽然你也可以用 \fB\-\-osdmap\fP 和 \fB\-\-pg\-dump\fP 选项来测试前面获取到的数据。
.SH 选项
.INDENT 0.0
.TP
.B \-\-compiled
用来指示输入、输出的 crushmap 是编译过的。
如果没指定此选项，想要的、返回的 crushmap 就是
txt （反编译过的）格式的。
.UNINDENT
.INDENT 0.0
.TP
.B \-\-pg\-dump <pg\-dump>
\fBceph pg dump\fP 的 JSON 格式输出。如果你没指定，
\fBcrushdiff\fP 会尝试自己调用命令获取数据。
.UNINDENT
.INDENT 0.0
.TP
.B \-\-osdmap <osdmap>
就是集群的 osdmap ，通过 \fBceph osd getmap\fP 命令获取到的。
如果没指定此选项， \fBcrushdiff\fP 会尝试自己调用命令获取数据。
.UNINDENT
.INDENT 0.0
.TP
.B \-\-verbose
输出诊断信息。
.UNINDENT
.SH 命令
.INDENT 0.0
.TP
\fBcompare\fP \fIcrushmap\fP
比较 \fIcrushmap\fP 文件里的和集群 osdmap 里的 crushmap 。
其输出将会展示期望的 pg 数、安装新 crushmap 后需要挪动的对象数和字节数。
.TP
\fBexport\fP \fIcrushmap\fP
把集群 osdmap 里的 crushmap 导出到 \fIcrushmap\fP 文件。
.TP
\fBimport\fP \fIcrushmap\fP
把 \fIcrushmap\fP 文件里的 crushmap 导入到集群的 osdmap 里。
.UNINDENT
.SH 实例
.sp
获取当前的 crushmap:
.INDENT 0.0
.INDENT 3.5
.sp
.nf
.ft C
crushdiff export cm.txt
.ft P
.fi
.UNINDENT
.UNINDENT
.sp
编辑此图:
.INDENT 0.0
.INDENT 3.5
.sp
.nf
.ft C
$EDITOR cm.txt
.ft P
.fi
.UNINDENT
.UNINDENT
.sp
检查结果:
.INDENT 0.0
.INDENT 3.5
.sp
.nf
.ft C
crushdiff compare cm.txt

79/416 (18.99%) pgs affected
281/1392 (20.19%) objects affected
80/1248 (6.41%) pg shards to move
281/4176 (6.73%) pg object shards to move
730.52Mi/10.55Gi (6.76%) bytes to move
.ft P
.fi
.UNINDENT
.UNINDENT
.sp
运行时如果加了 \fB\-\-verbose\fP 选项，
输出内容里也会包含受影响 PG 的详细信息，如下：
.INDENT 0.0
.INDENT 3.5
.sp
.nf
.ft C
4.3     [0, 2, 1] \-> [1, 4, 2]
4.b     [0, 1, 3] \-> [2, 1, 3]
4.c     [4, 0, 1] \-> [4, 1, 2]
.ft P
.fi
.UNINDENT
.UNINDENT
.sp
即，一个 PG 号、及其 osd 的新旧 active set 对比。
.sp
如果对结果满意就安装更新过的图：
.INDENT 0.0
.INDENT 3.5
.sp
.nf
.ft C
crushdiff import cm.txt
.ft P
.fi
.UNINDENT
.UNINDENT
.SH 使用范围
.sp
\fBcrushdiff\fP 是 Ceph 的一部分，这是个伸缩力强、开源、
分布式的存储系统，更多信息参见 \fI\%https://docs.ceph.com\fP 。
.SH 参考
.sp
ceph(8),
crushtool(8),
osdmaptool(8),
.SH COPYRIGHT
2010-2014, Inktank Storage, Inc. and contributors. Licensed under Creative Commons Attribution Share Alike 3.0 (CC-BY-SA-3.0)
.\" Generated by docutils manpage writer.
.
